package com.csea.common.domain.mapper;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.csea.common.domain.dos.UserIdiomDo;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * 用户成语 Mapper 接口
 */
@Mapper
public interface UserIdiomMapper extends BaseMapper<UserIdiomDo> {

    // 根据用户ID查询用户和keyword模糊查询成语
    default List<UserIdiomDo> selectByUserIdAndKeyword(Integer userId, String keyword){
        return selectList(new LambdaQueryWrapper<UserIdiomDo>()
                .eq(UserIdiomDo::getUserId, userId)
                .like(UserIdiomDo::getWord, keyword)
                .or()
                .like(UserIdiomDo::getSynonyms, keyword)
        );
    }


    /**
     * 统计用户新卡片数量（状态为NEW）
     */
    default Long countNewCards(Integer userId) {
        return selectCount(new LambdaQueryWrapper<UserIdiomDo>()
                .eq(UserIdiomDo::getUserId, userId)
                .eq(UserIdiomDo::getCardStatus, 0) // NEW=0
                .eq(UserIdiomDo::getIsDelete, 0));
    }

    /**
     * 统计需要复习的卡片数量（状态为REVIEW且下次复习时间<=当前时间）
     */
    default Long countReviewCards(Integer userId) {
        return selectCount(new LambdaQueryWrapper<UserIdiomDo>()
                .eq(UserIdiomDo::getUserId, userId)
                .eq(UserIdiomDo::getCardStatus, 1) // REVIEW=1
                .eq(UserIdiomDo::getIsDelete, 0));
    }

}